package demo3;

/**
 * 请实现笔记本电脑使用USB鼠标、USB键盘的例子
 *
 * 1. USB接口：包含打开设备、关闭设备功能
 * 2. 笔记本类：包含开机功能、关机功能、使用USB设备功能
 * 3. 鼠标类：实现USB接口，并具备点击功能
 * 4. 键盘类：实现USB接口，并具备输入功能
 */
interface USB{
    void openDevice();
    void closeDevice();
}
class Mouse implements USB{
    @Override
    public void openDevice() {
        System.out.println("打开鼠标");
    }

    @Override
    public void closeDevice() {
        System.out.println("关闭鼠标");
    }
    public void click(){
        System.out.println("鼠标点击");
    }
}
class KeyBoard implements USB{
    @Override
    public void openDevice() {
        System.out.println("打开键盘");
    }

    @Override
    public void closeDevice() {
        System.out.println("关闭键盘");
    }
    public void inPut(){
        System.out.println("键盘输入");
    }
}
class Computer{
    public void powerOn(){
        System.out.println("打开笔记本电脑");
    }
    public void powerOff(){
        System.out.println("关闭笔记本电脑");
    }
    public  void  useDevice(USB usb){
        usb.openDevice();
        if(usb instanceof Mouse){
            ((Mouse) usb).click();//向下转型
        }else if(usb instanceof KeyBoard){
            ((KeyBoard) usb).inPut();//向下转型
        }
        usb.closeDevice();
    }

}
public class Test {

    public static void main(String[] args) {
        /**
         * 调用类中的非静态方法，需要先实例化那个类，【引用.方法】才行。
         */
        //打开电脑
        Computer computer = new Computer();
        computer.powerOn();
        //使用鼠标设备
        computer.useDevice(new Mouse());//向上转型
        //使用键盘设备
        computer.useDevice(new KeyBoard());//向上转型
        //关闭电脑
        computer.powerOff();

    }
}
